package com.xaicode.auth.base;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 通用带数据权限的基础实体父类
 * 
 * @date 2025/1/9
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class BaseDataScopeEntity extends BaseEntity {

    /**
     * 数据权限字段，用于标识数据创建者的特定权限信息。
     * <p>
     * 常用处理规则如下：
     * 1. 超级管理员：忽略该字段，畅行无阻
     * 2. 普通用户：根据 asl-auth 模块对用户的角色和部门配置，操作权限之下的数据
     * <p>
     * 该字段默认为空，即默认不参与数据权限判定。
     * 该字段的值来自登录用户的认证信息中的部门id，创建时设置，不允许修改。
     * 进行数据权限判定时，使用登陆用户的可访问部门id集合与该字段进行包含判定。
     */
    @TableField(value = "data_scope", fill = FieldFill.INSERT)
    @JsonIgnore
    private String dataScope;

}
